home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #14
/
Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO
/
internet
/
ncftp2b6.zip
/
NCFTP.MAN
< prev
next >
Wrap
Text File
|
1996-01-13
|
57KB
|
1,301 lines
NcFTP(1) Unix Programmer's Manual NcFTP(1)
NNNAAAMMMEEE
NcFTP - Internet file transfer program
SSSYYYNNNOOOPPPSSSIIISSS
nnncccffftttppp [_p_r_o_g_r_a_m _o_p_t_i_o_n_s] [[_o_p_e_n _o_p_t_i_o_n_s] _h_o_s_t_n_a_m_e[:::_p_a_t_h_n_a_m_e]]
OOOPPPTTTIIIOOONNNSSS
Program options:
-D : Turn debug mode and trace mode on.
-L : Don't use visual mode (use line mode).
-V : Use visual mode.
-H : Dump the version information.
Command-line open options:
-a : Open anonymously.
-u : Open with username and password prompt.
-p X : Use port number X when opening.
-r : Redial until connected.
-d X : Redial, delaying X seconds between tries.
-g X : Give up after X redials without connection.
Command-line retrieve options:
-C : Force continuation (reget).
-f : Force overwrite.
-G : Don't use wildcard matching.
-R : Recursive. Useful for fetching whole directories.
-n X : Get selected files only if X days old or newer.
DDDEEESSSCCCRRRIIIPPPTTTIIIOOONNN
_N_c_F_T_P is a user interface to the Internet standard _F_i_l_e _T_r_a_n_s_f_e_r
_P_r_o_t_o_c_o_l. This program allows a user to transfer files to and from a
remote network site, and offers additional features that are not found in
the standard interface, _f_t_p.
The program runs in one of three modes: _v_i_s_u_a_l _m_o_d_e, _l_i_n_e _m_o_d_e, and
_c_o_l_o_n _m_o_d_e.
If your system is somewhat modern, the default mode should be _v_i_s_u_a_l
_m_o_d_e. This is a full-screen interface that uses the _c_u_r_s_e_s library.
With visual mode, you edit the program's settings with a nice screen
interface instead of typing arcane commands.
If you are not in visual mode, you will be using _l_i_n_e _m_o_d_e for the
interactive shell. This mode is a no-frills command-line interface that
will look like the default _f_t_p program's command shell.
The third mode, _c_o_l_o_n _m_o_d_e, refers to the program's ability to do a quick
retrieve of a file directly from your shell command line, without going
into the program's own shell. This mode is useful for shell scripts.
IIINNNTTTRRROOODDDUUUCCCTTTIIIOOONNN TTTOOO VVVIIISSSUUUAAALLL MMMOOODDDEEE
2.3.0 1
NcFTP(1) Unix Programmer's Manual NcFTP(1)
When entering visual mode, the screen clears and is rewritten with the
splash screen. You should see the black status bar occupying the second
to last row on the screen. Beneath the status bar is the input line,
where you type commands to the program's shell.
The program then waits for you to do something. Usually this means you
want to open a remote filesystem to transfer files to and from your local
machine's filesystem. To do that, you need to know the symbolic name of
the remote system, or its _I_n_t_e_r_n_e_t _P_r_o_t_o_c_o_l (IP) address. For example, a
symbolic name might be ``typhoon\.unl\.edu,'' and its IP address could be
``129.93.33.24.'' To open a connection to that system, you use the
program's _o_p_e_n command:
open typhoon.unl.edu
open 129.93.33.24
Both of these try to open the machine called typhoon at the _U_n_i_v_e_r_s_i_t_y _o_f
_N_e_b_r_a_s_k_a. Using the symbolic name is the preferred way, because IP
addresses may change without notice, while the symbolic names usually
stay the same.
When you open a remote filesystem, you need to have permission. The _F_T_P
_P_r_o_t_o_c_o_l's authentication system is very similar to that of logging in to
your account. You have to give an account name, and its password for
access to that account's files. However, most remote systems that have
anything you might be interested in don't require an account name for
use. You can often get anonymous access to a remote filesystem and
exchange files that have been made publicly accessible. The program
attempts to get anonymous permission to a remote system by default. What
actually happens is that the program tries to use ``anonymous'' as the
account name, and when prompted for a password, uses your E-mail address
as a courtesy to the remote system's maintainer. You can have the
program try to use a specific account also. That will be explained
later.
If the connection succeeded, you should see the status bar change to hold
the remote system's name on one side, and the current remote directory on
the other side. To see what's in the current remote directory, you can
use the program's _l_s and _d_i_r commands. The former is terse, preferring
more remote files in less screen space, and the latter is more verbose,
giving detailed information about each item in the directory.
You can use the program's _c_d command to move to other directories on the
remote system. The cd command behaves very much like the command of the
same name in the _B_o_u_r_n_e and _K_o_r_n shell.
The purpose of the program is to exchange data with other systems. You
can use the program's _g_e_t command to copy a file from the remote system
to your local system:
get README.txt
The program will display the progress of the transfer on the screen, so
you can tell how much needs to be done before the transfer finishes.
When the transfer does finish, then you can enter more commands to the
program's command shell.
2.3.0 2
NcFTP(1) Unix Programmer's Manual NcFTP(1)
You can use the program's _p_u_t command to copy a file from your system to
the remote system:
put something.tar
When you are finished using the remote system, you can open another one
or use the _q_u_i_t command to terminate the program.
TTTHHHEEE BBBOOOOOOKKKMMMAAARRRKKKSSS FFFIIILLLEEE
One of the program's goals is to minimize typing and maximize
convenience. The program automatically saves information about the sites
you call on in a special file called the _b_o_o_k_m_a_r_k_s file, which is stored
in the ._n_c_f_t_p subdirectory of your home directory. Each bookmark saves
the host name along with other settings, including the remote directory
you were in, the account information, and more. This makes it easy to
call back a site later and have everything be like it was when you left
the last time.
A big advantage of saving this information is that you can refer to a
site by a shorter, more meaningful name, instead of using the full
symbolic host name for a site. For example, if you called a site named
``typhoon\.unl\.edu'' frequently, its bookmark name might be just
``typhoon.'' Then, instead of:
open typhoon.unl.edu
you could use:
open typhoon
You could also abbreviate the bookmark name further, as long as the
program will know which site you are referring to. If no other
bookmark's name starts with the letters ``ty,'' you could do just:
open ty
Use the bookmarking feature to assign mnemonic names to hosts whose real
names don't give much hint to what you call there for. A popular game
called _N_e_t_h_a_c_k is archived at linc\.cis\.upenn\.edu, in the /pub/NH3\.1
directory. You could assign ``nethack'' as the bookmark name for this
site. Then you could try:
open nethack
instead of:
open linc.cis.upenn.edu
UUUSSSIIINNNGGG TTTHHHEEE BBBOOOOOOKKKMMMAAARRRKKK EEEDDDIIITTTOOORRR
To manipulate the bookmarks stored in your bookmarks file, you use the
program's bookmark editor. Run the bookmark editor by typing the
_b_o_o_k_m_a_r_k_s command from within the program. This brings up a new screen
of information.
2.3.0 3
NcFTP(1) Unix Programmer's Manual NcFTP(1)
On the right side is the list of remote systems the program has saved for
you already. Each time you open a connection to a remote system, the
program saves an entry in your bookmark file for you automatically. If
you have not opened any sites successfully yet, this list would be empty.
On the left side is some instructions saying what you can do with the
list. The bookmark editor is waiting for you to do something, like
select a bookmark whose settings you want to edit.
Some bookmark editor ``hot key'' commands are one key only. You do not
need to hit enter after the hot key commands. To exit the bookmark
editor for example, you would just type the ``x'' key only. The multi-
key commands require a slash first and do require the enter key. To
delete the selected site, for example, you would type the ``/'' key, then
``del,'' and then the enter key.
You can use the ``d'' key to move down one line in the list, and the
``u'' key to move up one line. If you have many entries in the bookmark
list, you won't be able to see them all at once. The bookmark list
scrolls as appropriate to bring the other sites into view. Use the ``p''
and ``n'' keys to move pages at a time.
Another way to select a site in the bookmark list is to use the capital
letters. If I had many entries in my bookmark list, but wanted to select
a site whose bookmark name was ``nethack,'' I could type ``N'' and the
list would zoom to the first site with bookmark starting with the letter
``n.''
After you have hilited a bookmark you want to edit, use the /_e_d command.
Doing that brings up another screen with the settings for that bookmark.
In the _B_o_o_k_m_a_r_k _O_p_t_i_o_n_s screen, you use hot keys to select a setting to
edit. To edit the bookmark name, for example, you would type ``a.''
When you are finished editing this bookmark, hit the ``x'' key to return
to the bookmark editor's screen.
BBBOOOOOOKKKMMMAAARRRKKK OOOPPPTTTIIIOOONNNSSS
Edit the _B_o_o_k_m_a_r_k _n_a_m_e field to change the name you use to open this site
with. Remember, when you change the bookmark name , you must use this
name to refer to this particular bookmark, so if you change it to
``foobar,'' you need to use ``open foobar.'' This is required because
you can have multiple entries for a remote host. For example, you could
have two bookmarks for wuarchive\.wustl\.edu, named ``wumac'' and
``wuwindows.'' If you were to say ``open wuarchive\.wustl\.edu,'' it
would not be clear to the program which host entry to use.
Change the login information for the site by editing the _U_s_e_r, _P_a_s_s_w_o_r_d,
and _A_c_c_o_u_n_t fields. Normally you would want to leave these as is for
anonymous logins. Depending on your situation, you might want to use a
specific account on the remote system. This is one way to get the
program to use a non-anonymous login.
The _D_i_r_e_c_t_o_r_y field specifies the directory to move to upon successful
connection to the remote host for this bookmark. When you close the
site, this field is updated for you automatically to be the directory you
2.3.0 4
NcFTP(1) Unix Programmer's Manual NcFTP(1)
were in when you closed the site.
The _T_r_a_n_s_f_e_r _T_y_p_e field can be changed to use a different translation
mode when transferring files. This program is usually running on a _U_N_I_X
system, and most remote systems are also _U_N_I_X variants, so the default
transfer type is _b_i_n_a_r_y, which does no translation at all.
However, when you need to work with plain text files and transfer them
between non-_U_N_I_X systems, you can change this to _A_S_C_I_I. That will
guarantee that the text-only files will translate correctly. Most often,
you will need to use the _b_i_n_a_r_y transfer type.
The _P_o_r_t field can be changed so that the program tries to use a non-
standard port number. I have yet to ever need a different port number,
but this capability is here in case it's needed.
The _H_a_s _S_I_Z_E _C_o_m_m_a_n_d field will probably not need to be edited. This
field is mostly for your information only. The _S_I_Z_E command is an _F_T_P
_P_r_o_t_o_c_o_l command that the program would like the remote server to
support. If it is supported, the program can get an exact number of
bytes of remote files before transferring. That is nice to know so the
progress reports work better.
The _H_a_s _M_D_T_M _C_o_m_m_a_n_d field will probably not need to be edited either.
If the remote server supports it, the program can get the exact
modification date of the remote file, and set the local file to the same
date.
The _C_a_n _U_s_e _P_a_s_s_i_v_e _F_T_P field specifies whether the remote server allows
use of the _F_T_P _P_r_o_t_o_c_o_l's _P_A_S_V command. There are two ways to set up FTP
connections. The default way is what I call _P_o_r_t _F_T_P. Unfortunately,
_P_o_r_t _F_T_P cannot be used when your local host is hiding behind a _F_i_r_e_w_a_l_l.
_P_a_s_s_i_v_e _F_T_P can be used with a firewall, and that's why I would like to
use that method if possible. You probably will not need to edit this
field, since this can be detected automatically most of the time.
The _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m field is used by the program to tell if it can rely
on certain dependencies to specific operating systems. If the OS is a
UNIX variant, the program can make some assumptions about the remote
server's responses. For example, if the OS is _U_N_I_X, the _l_s command tries
to use the -_C_F flags, like you could with ``/bin/ls -CF'' on _U_N_I_X. If
the OS wasn't _U_N_I_X, the ``-CF'' might not make sense to the remote server
and it might complain. You probably will not need to edit this field,
since this can be detected automatically most of the time.
The comment field can be used to store a brief description about the
site. For example, for my ``nethack'' entry, I could use this field to
hold ``Archive site for latest version of Nethack.'' When you are in the
bookmark editor's window, if you hilite a site that has a comment, it is
printed at the bottom of the screen so you do not have to edit the site
to look at it.
2.3.0 5
NcFTP(1) Unix Programmer's Manual NcFTP(1)
PPPRRREEEFFFEEERRREEENNNCCCEEESSS
In addition to remote-host specific options, the program has global
options that are user-configurable. To change the program's preferences,
run the _p_r_e_f_s command from within the program.
The _D_e_f_a_u_l_t _o_p_e_n _m_o_d_e field specifies how the program should try to open
connections. If you do a lot of anonymous FTPing, you should leave this
set to _a_n_o_n_y_m_o_u_s. You might want to set this field to _u_s_e_r & _p_a_s_s_w_o_r_d if
the hosts you FTP to most often don't allow anonymous logins. For
example, if you are using the program on your company network to copy
things from different company machines, you would not want to use
_a_n_o_n_y_m_o_u_s FTP mode.
The _A_n_o_n_y_m_o_u_s _p_a_s_s_w_o_r_d field lets you change the value given to the
remote host when you use an anonymous login. It is customary (and
sometimes required) to use your e-mail address as the password for
anonymous FTP, so the remote host's administrator knows who is using the
service. If the program didn't get your e-mail address right, or you
want to use something different, you can change it here.
The program now uses more whitespace than before to reduce eyestrain. If
you prefer, you can turn off that feature by changing the _B_l_a_n_k _l_i_n_e_s
_b_e_t_w_e_e_n _c_m_d_s field.
The program can log the transfers you do to a file so you can refer to
the log if you can't remember where you got something. To turn on the
log, which is saved as ~/._n_c_f_t_p/_l_o_g, you can set the _U_s_e_r _l_o_g _s_i_z_e field
to a number greater than zero. You probably do not want to let this file
grow forever, so you set the maximum size of the log by setting that
field.
Although the program is perfectly happy saving every site you ever open
in the bookmarks file, you may want to put an upper bound on the number
of sites saved. If you have a slow machine, which might cause the
program to take awhile to load and save the bookmarks, or if disk space
is at a premium, you can set the _M_a_x _b_o_o_k_m_a_r_k_s _t_o _s_a_v_e field to limit the
number of bookmarks saved. Once that limit is reached, the program will
discard sites whose time since the last connection is the longest. In
other words, a site you only called once a long time ago and forgot about
will be the first to go.
A few program functions need to use a _p_a_g_e_r program to view large amounts
of text. For example, the _p_a_g_e command retrieves a remote file and uses
the pager to view it. You can specify the program to use (and its
command line flags, if any) by setting the _p_a_g_e_r field.
When you transfer files between the remote host and your local host, the
program uses a _p_r_o_g_r_e_s_s _m_e_t_e_r to show you the status of the transfer.
The program has a few different progress meters to choose from, and you
can try out the other ones by changing the _P_r_o_g_r_e_s_s _m_e_t_e_r field.
You can control how much of the remote server's chatter is printed by
changing the _R_e_m_o_t_e _m_e_s_s_a_g_e_s field. The program always prints error
messages, but most of the time the remote server doesn't have anything
useful to say. There are a couple of messages that may be worth
2.3.0 6
NcFTP(1) Unix Programmer's Manual NcFTP(1)
printing. The first is the _s_t_a_r_t_u_p _m_e_s_s_a_g_e. Typically, when you connect
to a server it has some important information about the server. Some
servers have _c_h_d_i_r _m_e_s_s_a_g_e_s, which are sent when you enter a special
directory. You specify whether to print these messages by toggling the
_R_e_m_o_t_e _m_e_s_s_a_g_e_s field.
By default, the program stays in the same directory you were in when you
ran the program, so that downloads will go in that directory. I like to
use a ``download directory'' so that all of my downloads go to a specific
directory. This prevents me from exceeding my quota, and overwriting my
other files. You can set the _S_t_a_r_t_u_p _i_n _L_o_c_a_l _D_i_r field to have the
program change the local directory each time when the program starts up.
Then you know where to expect your downloads to end up.
The program itself has some messages which you may get tired of and want
to turn off. You can change the _S_t_a_r_t_u_p _m_e_s_s_a_g_e_s field to specify
whether the program prints its ``splash screen'' and whether it prints a
_t_i_p on how to maximize use of the program.
When you retrieve a remote file, by default the program tries to also set
the exact modification time of the local file as the remote file. You
can turn that off by changing the _F_i_l_e _t_i_m_e_s_t_a_m_p_s field.
If you don't like the full-screen graphics, you can use the line-oriented
mode by changing the _S_c_r_e_e_n _g_r_a_p_h_i_c_s field. Once you turn _v_i_s_u_a_l mode
off from the _P_r_e_f_e_r_e_n_c_e_s screen, you won't be able to get back to the
preferences screen again when using _l_i_n_e mode. To get back into visual
mode, you can run the program with the ``-V'' flag, like:
ncftp -V
CCCOOOMMMMMMAAANNNDDD RRREEEFFFEEERRREEENNNCCCEEE
I will now describe the commands that the program's command shell
supports. The first command to know is _h_e_l_p. If you just type
help
from the command shell, the program prints the names of all of the
supported commands. From there, you can get specific help for a command
by typing the command after, for example:
help open
prints information about the _o_p_e_n command.
The shell escape command is simply the exclamation point, ! To spawn a
shell, just do:
!
You can also use this to do one command only, like:
!date +%H:%M:%S
2.3.0 7
NcFTP(1) Unix Programmer's Manual NcFTP(1)
The _c_d command changes the working directory on the remote host. Use
this command to move to different areas on the remote server. If you
just opened a new site, you might be in the root directory. Perhaps
there was a directory called ``/pub/news/comp\.sources\.d'' that someone
told you about. From the root directory, you could:
cd pub
cd news
cd comp.sources.d
or, more concisely,
cd /pub/news/comp.sources.d
Then, commands such as _g_e_t, _p_u_t, and _l_s could be used to refer to items
in that directory.
Some shells in the _U_N_I_X environment have a feature I like, which is
switching to the previous directory. Like those shells, you can do:
cd -
to change to the last directory you were in.
The _c_l_o_s_e command disconnects you from the remote server. The program
does this for you automatically when needed, so you can simply open other
sites or quit the program without worrying about closing the connection
by hand.
Sometimes it may be necessary to use the _c_r_e_a_t_e command. This makes an
empty file on the remote host. This can be useful when you are unable to
contact the remote server's administrator, but hope someone in the know
will spot your file. For example,
create readline2.0.tar_is_corrupt
might persuade someone to repost that file.
The _d_e_b_u_g command is mostly for use by me and the testers. You could
type
debug 1
to turn debugging mode on. Then you could see all messages between the
program and the remote server, and things I print only in debugging mode.
If you report a bug, I might ask you to send me a _t_r_a_c_e file. To do
that, you would run the program, and then type
debug trace 1
And so I could see how the program was compiled, you would type
version
2.3.0 8
NcFTP(1) Unix Programmer's Manual NcFTP(1)
After you quit the program, you could then send me an email with the
contents of the ~/\._n_c_f_t_p/_t_r_a_c_e file, which would also have the version
information in it.
The _d_i_r command prints a detailed directory listing. It tries to behave
like _U_N_I_X's ``/bin/ls -l'' command. If the remote server seems to be a
_U_N_I_X host, you can also use the same flags you would with _l_s, for
instance
dir -rt
would try to act like
/bin/ls -lrt
would on _U_N_I_X.
The _e_c_h_o command wouldn't seem very useful, but it can be nice for use
with the program's macros. It behaves like the equivalent command does
under a _U_N_I_X shell, but accepts some extra flags. All ``percent'' flags
are fed through _s_t_r_f_t_i_m_e(4). So you could type
echo It is now %H:%M on %B %d.
and you should get something like this printed on your screen:
It is now 19:00 on January 22.
There are also ``at'' flags, which the program expands:
@H : Name of connected host
@D : Full pathname of remote current working directory
@J : Short name of remote current working directory
@N : Newline.
@n : Bookmark name of connected host
Example:
echo "Connected to @H at %H:%M." >> junk
If you later looked at the contents of ``junk,'' it might say:
Connected to sphygmomanometer.unl.edu at 20:37.
The _g_e_t command copies files from the current working directory on the
remote host to your machine's current working directory. To place a copy
of ``README'' in your local directory, you could try:
get README
The _g_e_t command has some powerful features which are described below, in
``SPECIAL DOWNLOADING FEATURES.''
The _b_o_o_k_m_a_r_k_s command runs the _B_o_o_k_m_a_r_k _E_d_i_t_o_r. You already know how
what that does, since you read the section above on it, right?
2.3.0 9
NcFTP(1) Unix Programmer's Manual NcFTP(1)
The _l_c_d command is the first of a few ``l'' commands that work with the
local host. This changes the current working directory on the local
host. If you want to download files into a different local directory,
you could use _l_c_d to change to that directory and then do your downloads.
Another local command that comes in handy is the _l_l_s command, which runs
``/bin/ls'' on the local host and displays the results in the program's
window. You can use the same flags with _l_l_s as you would in your command
shell, so you can do things like:
lcd ~/doc
lls -lrt p*.txt
The program also has a built-in interface to the name service via the
_l_o_o_k_u_p command. This means you can lookup entries for remote hosts,
like:
lookup cse.unl.edu ftp.cs.unl.edu sphygmomanometer.unl.edu
prints:
cse.unl.edu 129.93.33.1
typhoon.unl.edu 129.93.33.24
sphygmomanometer.unl.edu 129.93.33.126
There is also a more detailed option, enabled with ``-v,'' i.e.:
lookup -v cse.unl.edu ftp.cs.unl.edu
prints:
cse.unl.edu:
Name: cse.unl.edu
Address: 129.93.33.1
ftp.cs.unl.edu:
Name: typhoon.unl.edu
Alias: ftp.cs.unl.edu
Address: 129.93.33.24
You can also give _I_P addresses, so this would work too:
lookup 129.93.33.24
prints:
typhoon.unl.edu 129.93.33.24
The _l_p_a_g_e command views a local file one page at a time. By default, the
program uses your pager program to view the files. You can choose to use
the built-in pager by using the ``-b'' flag. Example:
lpage -b ~/.ncftp/bookmarks
2.3.0 10
NcFTP(1) Unix Programmer's Manual NcFTP(1)
The _l_p_w_d command is prints the current local directory. Use this command
when you forget where you are on your local machine.
The _l_s command prints a brief directory listing. It tries to behave like
_U_N_I_X's ``/bin/ls -CF'' command. If the remote server seems to be a _U_N_I_X
host, you can also use the same flags you would with _l_s, for instance
ls -rt
would try to act like
/bin/ls -CFrt
would on _U_N_I_X.
The _m_k_d_i_r command tries to create a new directory on the remote host.
For many public archives, you won't have the proper access permissions to
do that.
The _o_p_e_n command connects you to a remote host. Many times, you will
simply open a host without using any flags, but nonetheless the _o_p_e_n
command has some flags to enable certain features.
To force an anonymous open, use the ``-a'' flag. On the _f_t_p\._p_r_o_b_e\._n_e_t
machine, which is the official archive site for _N_c_F_T_P, I have a need to
use both anonymous logins and user logins. The _B_o_o_k_m_a_r_k _E_d_i_t_o_r remembers
type of login I used last, so if the last time was a user login, I could
use the ``-a'' flag to switch back to the anonymous login type without
having to use the _B_o_o_k_m_a_r_k _E_d_i_t_o_r to change that.
Likewise, I could use the ``-u'' flag to force a user open. Then I could
give my account name and password to access that account.
Many of the big archive sites like _w_u_a_r_c_h_i_v_e\._w_u_s_t_l\._e_d_u are busy, so you
aren't guaranteed a connection to them. The program lets you ``redial''
sites periodically, until a connection succeeds. Use the ``-r' flag to
turn on automatic redial.
Redial itself has a few parameters. You can set the delay, in seconds,
of the time spent waiting between redials. You can also have the program
give up after a maximum number of redials is reached. Here's an example
that fully utilizes redial mode:
open -r -d 75 -g 10 bowser.nintendo.co.jp
The ``-r'' turns on redialing, the ``-d'' sets the redial delay to 75
seconds, and the ``-g'' flag limits redialing to 10 tries. If you like,
you can just trust the default redial settings and only use ``-r.''
The _o_p_e_n command will run the _B_o_o_k_m_a_r_k _E_d_i_t_o_r if you don't supply a
hostname to open. You can use the _B_o_o_k_m_a_r_k _E_d_i_t_o_r to select a host and
open it by hitting the _r_e_t_u_r_n key.
The _p_a_g_e command lets you browse a remote file one page at a time. This
is useful for reading README's on the remote host without downloading
them first. This command uses whatever program you have set the _p_a_g_e_r
2.3.0 11
NcFTP(1) Unix Programmer's Manual NcFTP(1)
field in the _P_r_e_f_e_r_e_n_c_e_s screen to view the file.
The _p_d_i_r and _p_l_s commands are equivalent to _d_i_r and _l_s respectively, only
they feed their output to your pager. These commands are primarily for
_l_i_n_e _m_o_d_e because directory listings can scroll offscreen. If you do a
normal _l_s while in _v_i_s_u_a_l mode, if it would go offscreen, the built-in
pager kicks in automatically. Therefore I don't recommend using _p_d_i_r and
_p_l_s while in _v_i_s_u_a_l mode.
The _r_e_d_i_r and _p_r_e_d_i_r commands give you a way to re-display the last
directory listing. The program saves the output from the last _d_i_r or _l_s
command you did, so if you want to see it again you can do this without
wasting network bandwidth. The _p_r_e_d_i_r command is the same as _r_e_d_i_r,
except that the output is fed to your pager.
I have found that I mostly download, and have next to no need at all to
upload. But the _p_u_t command is there in case you need to upload files to
remote hosts. For example, if I wanted to send some files to a remote
host, I could do:
lcd ~/docs/files
put 02.txt 03.txt 05.txt 07.txt 11.txt
The _p_u_t command won't work if you don't have the proper access
permissions on the remote host. Also, this command doesn't have any of
the special features that the _g_e_t command has, except for the ``-z''
option.
The _p_w_d command prints the current remote working directory. In _v_i_s_u_a_l
mode, this is in the status bar.
If you need to change the name of a remote file, you can use the _r_e_n_a_m_e
command, like:
rename SPHYGMTR.TAR sphygmomanometer-2.3.1.tar
Of course, when you finish using the program, type _q_u_i_t to end the
program (You could also use _b_y_e, _e_x_i_t, or ^_D).
The _q_u_o_t_e command can be used to send a direct _F_T_P _P_r_o_t_o_c_o_l command to
the remote server. Generally this isn't too useful to the average user
(or me either).
The _r_h_e_l_p command sends a help request to the remote server. The list of
_F_T_P _P_r_o_t_o_c_o_l commands is often printed, and sometimes some other
information that is actually useful, like how to reach the site
administrator.
Depending on the remote server, you may be able to give a parameter to
the server also, like:
rhelp NLST
2.3.0 12
NcFTP(1) Unix Programmer's Manual NcFTP(1)
One server responded:
Syntax: NLST [ <sp> path-name ]
If you need to delete a remote file you can try the _r_m command. Much of
the time this won't work because you won't have the proper access
permissions. This command doesn't accept any flags, so you can't nuke a
whole tree by using ``-rf'' flags like you can on _U_N_I_X.
Similarly, the _r_m_d_i_r command removes a directory. Depending on the
remote server, you may be able to remove a non-empty directory, so be
careful.
The _s_e_t command is provided for backward compatibility with older
versions of the program, and is superseded by the _p_r_e_f_s command. The
basic syntax is:
set option value
Where the option is the short name of the corresponding field in the
_P_r_e_f_e_r_e_n_c_e_s screen. The short names of the preferences fields can be
found by browsing your ~/._n_c_f_t_p/_p_r_e_f_s file. This command is mainly for
use with _l_i_n_e _m_o_d_e, but since that mode is no longer officially supported
by me, I want to discourage the use of this command.
One obscure command you may have to use someday is _s_i_t_e. The _F_T_P
_P_r_o_t_o_c_o_l allows for ``site specific'' commands. These ``site'' commands
vary of course, but one common sub-command that is useful that some sites
support is _c_h_m_o_d, i.e.:
site chmod 644 README
Try doing one of these to see what the remote server supports, if any:
rhelp SITE
site help
You may need to change transfer types during the course of a session with
a server. You can use the _t_y_p_e command to do this. Try one of these:
type ascii
type binary
type image
If you ever need to contact me about the program, please familiarize
yourself with the _v_e_r_s_i_o_n command. This command dumps a lot of
information that tells me which edition of the program you are using, and
how it was installed on your system. Here's a way to save the output of
this command to a file, so you can send it to me:
version > version.txt
2.3.0 13
NcFTP(1) Unix Programmer's Manual NcFTP(1)
SSSPPPEEECCCIIIAAALLL DDDOOOWWWNNNLLLOOOAAADDDIIINNNGGG FFFEEEAAATTTUUURRREEESSS
You probably already know that you use the _g_e_t command to copy files on
the remote host to the local host. But the _g_e_t command has a few other
tricks that you might find useful. First of all, _n_c_f_t_p skips files you
already have. If you try to
get file24
and there is a file named ``file24'' in the current local directory
already, the program uses some additional heuristics to determine if it
should actually waste network bandwidth to download it again.
The program tries to get the date and size of the remote file ``file24.''
If that file has the exact same date and size as the local file
``file24,'' the program will skip over that file. If the program could
not get the date or size of the remote file, or the size differs, the
program will go ahead and fetch the file.
In addition, if the local file's date is newer than the remote file's
date, the program skips the download because it concludes you already
have a more recent version.
What all this means for you is that you can use the program to _m_i_r_r_o_r
another archive. For example, you might have a task that requires you
keep a mirror of all the files of a remote directory called ``files.''
In that directory, there might be dozens of files, some of which are
updated occasionally. You could use _n_c_f_t_p to help you out by setting the
appropriate local and remote directories, then simply doing:
get *
The program will skip over the old files, and only download the files
that you don't have or have been updated since the last time.
Nonetheless, you may want to ignore the program's advice and download a
file anyway, despite the program's thinking that you don't need to. You
can use the ``-f'' flag with _g_e_t to force a download:
get -f README
You may also need to use the ``-C'' flag to force the program to continue
downloading where it left off. I sometimes call that feature ``forced
reget'' for historical reasons.
You can also turn off _w_i_l_d_c_a_r_d _m_a_t_c_h_i_n_g with _g_e_t by using the ``-G''
flag. Other _F_T_P programs used the syntax
get remote-file [local-file]
which allowed you to specify a local pathname for the file you were
trying to download. _N_c_F_T_P differs in that respect, and if you used the
older programs, you would find that the program's _g_e_t behaves more like
those other program's _m_g_e_t command. This means that in _N_c_F_T_P,that
get file01 file02
2.3.0 14
NcFTP(1) Unix Programmer's Manual NcFTP(1)
tries to download remote files named ``file01'' and ``file02.'' If you
like, you can get that older behavior by using the ``-z'' flag, so:
get -z file01 ../junk/files/01.txt
would get ``file01'' and use the local name ``\.\./junk/files/01\.txt.''
Another thing that _g_e_t does is that you can use the ``-n'' flag to fetch
files that are a certain number of days old or newer. If you just want
to get the newest files at an archive, you don't have to use a full
mirror. You can just say ``download all files that are 3 days old or
newer.'' Do that by going to a directory, and trying:
get -n 3 *
The program also has ``reget'' mode built into the _g_e_t command. Other
FTP programs provided a _r_e_g_e_t command, which was useful when you lost a
connection during a download. Instead of the remote host resending the
entire file, you could use the _r_e_g_e_t command to continue the transfer
where it was cut off.
_N_c_F_T_P has this capability built-in, and it examines the date and size of
the remote file and local file to determine if the program should
continue where it left off last time. If the dates are the same, but the
local file is smaller, the program attempts to ``reget.''
The last, and most wasteful feature of _g_e_t is recursive mode, which is
turned on with the ``-R'' flag. This feature lets you download an entire
directory's contents, i.e.:
get -R /pub/info/help
That creates a directory called ``./help'' in the current local
directory, and copies all files and subdirectories into it.
Please use some discretion with this feature. If you get a large
directory, you could really bog down the remote host. Archive
administrators are providing a public service, so don't abuse the archive
so much that they have to shut down public access because the real users
of that archive can't get their work done.
MMMAAACCCRRROOOSSS
The program has a simple macro/alias facility. You can use macros to
roll your own commands, or do things when certain events happen.
To use macros, you will need to create and edit the _m_a_c_r_o_s file in your
._n_c_f_t_p subdirectory of your home directory. Your ~/._n_c_f_t_p directory is
created for you automatically the first time you run the program, but you
have to make the _m_a_c_r_o_s file yourself since most users won't have a need
for them.
You can have any number of macros. The syntax is:
macro macro-name
macro-body...
2.3.0 15
NcFTP(1) Unix Programmer's Manual NcFTP(1)
end
Here's a simple macro that users of the old _f_t_p program might appreciate:
macro binary
type i
end
You could run that macro simply by running the program and typing the
macro name as if it were a regular _n_c_f_t_p command.
Macros can also have parameters, much like the _K_o_r_n _S_h_e_l_l's shell
functions and the _C-_S_h_e_l_l's aliases. These parameters are sent to your
macro, and if your macro uses the appropriate ``dollar'' variables, they
are expanded. To illustrate, try this macro:
macro cdls
cd $1
ls
end
To run that macro, open a connection and try:
cdls /pub
That would try to _c_d to /pub, and then try to list its contents with _l_s.
Dollar variables are somewhat like those in the _B_o_u_r_n_e and _K_o_r_n shells.
Example syntax:
$4 : Argument 4
$* : All arguments.
$@ : All arguments, each of them surrounded by double quotes.
$(2-5) : Arguments 2, 3, 4, and 5.
$(2,5) : Arguments 2 and 5.
$(3+) : Arguments 3, 4, 5, ..., N.
A better way to code the ``cdls'' macro might be:
macro cdls
cd $1
ls $(2+)
end
There are some special macros, which I call _e_v_e_n_t _m_a_c_r_o_s. The program
looks for macros by special names, and if they exist, runs the macro when
that event happens.
One event macro is the ._s_t_a_r_t._n_c_f_t_p macro. If you have a macro by that
name defined in your macros file, the program will run that macro each
time you run the program.
Similarly, there is also a ._q_u_i_t._n_c_f_t_p macro that is run each time you
quit the program.
2.3.0 16
NcFTP(1) Unix Programmer's Manual NcFTP(1)
Another set of event macros are site-specific. For example, if I have a
site bookmarked as ``typhoon'' I could then define macros named
._o_p_e_n._t_y_p_h_o_o_n and ._c_l_o_s_e._t_y_p_h_o_o_n which would run each time I opened and
closed ``typhoon.''
Another, more generic set of event macros are the ._o_p_e_n._a_n_y and
._c_l_o_s_e._a_n_y macros which run when I open or close any site. One possible
use for these macros is to run separate shell scripts to do some
processing after you finish using a site. I could have a macro like
this:
macro .quit.ncftp
echo "Started post-processing downloads at %H:%M:%S"
!sh ~/scripts/download-decoder
echo "Finished post-processing downloads at %H:%M:%S"
end
Another use is to duplicate the old _m_a_c_d_e_f _i_n_i_t hack that the traditional
_f_t_p program used in its ._n_e_t_r_c file. For example:
macro .open.infomac
echo "Getting recent files list"
get -z /pub/info-mac/help/recent-files ~/docs/recent
ls -lrt
end
UUUSSSIIINNNGGG CCCOOOLLLOOONNN MMMOOODDDEEE
The _c_o_l_o_n-_m_o_d_e feature is used from your shell's command line.
In ancient times, way back during the Disco Era, you could use a program
called _t_f_t_p to fetch a file using the Internet standard _T_r_i_v_i_a_l _F_i_l_e
_T_r_a_n_s_f_e_r _P_r_o_t_o_c_o_l. You could use that program to do something like this
from within its shell:
get wuarchive.wustl.edu:/graphics/gif/README
and that would call wuarchive and fetch the README file.
You can use this program to do the same thing from your shell's command
line:
csh> ncftp wuarchive.wustl.edu:/graphics/gif/README
csh> head README
This tells your shell, in this case the _C-_s_h_e_l_l to run _N_c_F_T_P, which would
open wuarchive, fetch /graphics/gif/README and write the file /README in
the current working directory, and then exits.
The _c_o_l_o_n-_m_o_d_e feature is nice if you don't want to browse around the
remote site, and you know exactly want you want. It also comes in handy
in shell scripts, where you don't want to enter the command shell, and
might not want the program to spew output.
You can use the _U_n_i_f_o_r_m _R_e_s_o_u_r_c_e _L_o_c_a_t_o_r standard also. For example,
this would work:
2.3.0 17
NcFTP(1) Unix Programmer's Manual NcFTP(1)
csh> ncftp ftp://wuarchive.wustl.edu/graphics/gif/README
There are times where you might not want the program to write a _c_o_l_o_n-
_m_o_d_e file in the current working directory, or perhaps you want to pipe
the output of a remote file into something else. _C_o_l_o_n-_m_o_d_e has options
to do this. It was inspired by the guy who wrote the _f_t_p_c_a_t perl script.
The ``-c'' option tells the program to write on the standard output
stream. The ``-m'' option pipes the file into your pager (like _m_o_r_e) Of
course this won't work if the thing you give _c_o_l_o_n-_m_o_d_e is a directory!
This example just dumps a remote file to stdout:
csh> ncftp -c wuarc:/graphics/gif/README
This example redirects a remote file into a different location:
csh> ncftp -c wu:/README > ~pdietz/thesis.tex
This one shows how to use a pipeline:
csh> ncftp -c wuarc:/README | tail | wc -l
10
csh>
This shows how to page a remote file:
csh> ncftp -m wuarc:/graphics/gif/README
UUUSSSIIINNNGGG LLLIIINNNEEE MMMOOODDDEEE
The only reason I provide _l_i_n_e _m_o_d_e is so that the primitive operating
systems whose _c_u_r_s_e_s library is missing or dysfunctional won't render the
program completely useless.
exceptions of the functions that require _v_i_s_u_a_l _m_o_d_e, such as the
_P_r_e_f_e_r_e_n_c_e_s screen and the _B_o_o_k_m_a_r_k _E_d_i_t_o_r. You will have to edit the
~/._n_c_f_t_p/_p_r_e_f_s and ~/._n_c_f_t_p/_b_o_o_k_m_a_r_k_s file manually, with a text editor.
As a small consolation, you get to use the full-powered line-editing
libraries, like _G_N_U _R_e_a_d_l_i_n_e if they were compiled with the program.
SSSUUUMMMMMMAAARRRYYY OOOFFF CCCOOOMMMMMMAAANNNDDD LLLIIINNNEEE OOOPPPTTTIIIOOONNNSSS
When you invoke the program from your shell, there are ``dash flags'' you
can use like you can with most other _U_N_I_X programs.
Here's a list of options you can use from the command line:
-D : Turns on debugging mode and tracing.
-V : Uses ``visual'' mode for this session.
-L : Uses ``line mode'' for this session.
-H : Prints the information from the ``version'' command and exits.
When you turn on tracing, the program writes a log with debugging
information to a file called _t_r_a_c_e in your ._n_c_f_t_p subdirectory of your
home directory. If you need to report a bug, it would be helpful to mail
me the _t_r_a_c_e file so I can track it down better.
2.3.0 18
NcFTP(1) Unix Programmer's Manual NcFTP(1)
In addition to the program flags, you can also use flags from the _o_p_e_n
and _g_e_t commands with a _c_o_l_o_n _m_o_d_e path. Here's a really complex
example:
csh> ncftp -r -d 120 -n 3 sphygmomanometer.unl.edu:/pub/stuff/*
This tries redialing that host every two minutes, and fetching all files
from the ``/pub/stuff'' directory that are 3 days old or newer.
AAAUUUTTTHHHOOORRR
_N_c_F_T_P was written by Mike Gleason, _N_C_E_M_R_S_o_f_t (mgleason@probe\.net).
_N_c_F_T_P is copyrighted 1995 by NCEMRSoft. All rights reserved.
As of this writing, the most recent version is archived in /pub/ncftp, on
_f_t_p\._p_r_o_b_e\._n_e_t.
TTTHHHAAANNNKKKSSS
Ideas and some code contributed by my partner, Phil Dietz, _N_C_E_M_R_S_o_f_t
(dietz@wtc\.com).
Thanks to everyone who has helped test the program, and sent in feedback
over the years. Your support is what drives me to improve the program!
I'd like to thank my former system administrators, most notably Charles
Daniel, for making testing on a variety of platforms possible, letting me
have some extra disk space, and for maintaining the UNL FTP site.
I also thank Dale Botkin and Tim Russell at _P_r_o_b_e _T_e_c_h_n_o_l_o_g_y, for giving
_n_c_f_t_p a home on _p_r_o_b_e\._n_e_t, the midwest's best connection to the
internet.
For testing above and beyond the call of duty, I am especially grateful
to: Phil Dietz, Kok Hon Yin (hkok@cse\.unl\.edu), Andrey A. Chernov
(ache@astral\.msk\.su).
Thanks to Tim MacKenzie (t\.mackenzie@trl\.oz\.au) for the filename
completion code.
Thanks to DaviD W. Sanderson (dws@ssec\.wisc\.edu), for helping me out
with the man page.
BBBUUUGGGSSS
Due to a limitation in the _c_u_r_s_e_s library, scrolling may be slow in
visual mode.
Shell escapes, suspending (^Z) and resuming, and interruping (^C) still
have quirks with _v_i_s_u_a_l _m_o_d_e.
There are no such sites named _b_o_w_s_e_r\._n_i_n_t_e_n_d_o\._c_o\._j_p or
_s_p_h_y_g_m_o_m_a_n_o_m_e_t_e_r\._u_n_l\._e_d_u.
2.3.0 19
NcFTP(1) Unix Programmer's Manual NcFTP(1)
SSSEEEEEE AAALLLSSSOOO
_f_t_p(1), _f_t_p_d(8), _n_s_l_o_o_k_u_p(1), _a_r_c_h_i_e(1), _r_c_p(1), _t_f_t_p(1).
2.3.0 20